Android is a Linux-based operating system designed primarily for touchscreen mobile devices such as smart phones and tablet computers. Android has a large number of applications (commonly referred to as “apps”) written primarily in a customized version of Java, and which extend functionality of the mobile devices. Certain obstacles to application development include the fact that Android does not use established Java standards, e.g., Java SE and ME, that are used for non-Android platforms. This prevents compatibility among Java applications written for non-Android platforms and those for the Android platform. Instead, Android only reuses the non-Android Java language syntax and semantics, but does not provide the full class libraries and APIs bundled with Java SE or ME, or other non-Android Java standards. In addition, by nature of the Android architecture, sharing of data between applications is severely constrained, if not impossible.
For example, the “Dalvik Virtual Machine” is an isolated virtual guest operating system which rests on top of a Linux kernel on an Android device to execute Android processes. By design, the Dalvik Virtual Machine separates Android applications from one another, effectively segregating the processes of a single application in order to prevent the apps from communicating with one another. The idea is if a malicious Android application shared the same space as other applications, the malicious app could potentially exploit other innocuous apps that may have been poorly designed, lacked security, and/or contained some kind of exploitable flaw. As a result, collaboration between applications is constrained to Android Inter-process Communication(s) (IPC) or requires privileged or root access to the phone.
Accordingly, there exists a need for a framework on the Android platform that facilitates seamless collaboration while reducing or removing the disadvantages involved with Android Inter-process Communications.